// ? 用于二次封装 axios
// 下载包
// 引入包
import axios from "axios";

// 这里想用组件库的轻提示需要引入进来
import { Toast } from "vant";

// 引入存的token
import { getItem, key, delItem } from "@/utils/localStorage";

// 引入router
import router from "@/router/index";

// 实例化 一个axios(用create方法实例)
const request = axios.create({
  baseURL: "http://interview-api-t.itheima.net/h5",
  timeout: 5000,
});

// 请求拦截器
request.interceptors.request.use(
  (config) => {
    // 在请求拦截器里面全局注入token
    const token = getItem(key);
    config.headers.Authorization = `Bearer ${token}`;
    return config;
  },
  (err) => {
    return Promise.reject(err);
  }
);
// 响应拦截器
request.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (err) => {
    // 判断token是否是401的情况
    if (err.response.status === 401) {
      // 是401的时候，删除存储的token，这样更加严谨
      delItem(key);
      router.push("/login");
    } else {
      Toast(err.response.data.message);
    }
    return Promise.reject(err);
  }
);

export default request;
